home *** CD-ROM | disk | FTP | other *** search
Text File | 1995-08-10 | 6.1 KB | 192 lines | [TEXT/MPS ] |
- (*
- File: DeskBus.mod
-
- Contains: Apple Desktop Bus (ADB) Interfaces.
-
- Version: Technology: System 7.5
- Package: Universal Interfaces 2.0 in “MPW Latest” on ETO #17
-
- Copyright: © 1984-1995 by Apple Computer, Inc.
- All rights reserved.
-
- Bugs?: If you find a problem with this file, use the Apple Bug Reporter
- stack. Include the file and version information (from above)
- in the problem description and send to:
- Internet: apple.bugs.applelink.apple.com
- AppleLink: APPLE.BUGS
-
- *)
-
- (*$TAGS-*)
- (*$CALLING PASCAL*)
- MODULE DeskBus;
-
- IMPORT SYSTEM, Types;
-
- (* $PUSH*)
- (* $ALIGN MAC68K*)
- (* $LibExport+*)
-
- TYPE
- ADBAddress* = CHAR;
-
- (*
- ADBCompletionProcPtr uses register based parameters on the 68k and cannot
- be written in or called from a high-level language without the help of
- mixed mode or assembly glue.
-
- In*:
- => dataBuffPtr A0.L
- => opDataAreaPtr A2.L
- => command D0.L
- *)
- ADBCompletionProcPtr* = Types.Register68kProcPtr; (* register PROCEDURE ADBCompletion*(dataBuffPtr: Types.Ptr; opDataAreaPtr: Types.Ptr; command: LONGINT); *)
- ADBCompletionUPP* = Types.UniversalProcPtr;
-
- CONST
- uppADBCompletionProcInfo* = $007B9802; (* Register PROCEDURE (4 bytes in A0, 4 bytes in A2, 4 bytes in D0); *)
-
- PROCEDURE NewADBCompletionProc*(userRoutine: ADBCompletionProcPtr): ADBCompletionUPP;
- (*$IF NOT GENERATINGCFM *)
- INLINE PASCAL $2E9F;
- (*$END*)
-
- PROCEDURE CallADBCompletionProc*(dataBuffPtr: Types.Ptr; opDataAreaPtr: Types.Ptr; command: LONGINT; userRoutine: ADBCompletionUPP);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL ; (*•• *)
- (*To be implemented*: Glue to move parameters into registers.*)
- (*$END*)
- TYPE
- (*
- ADBDeviceDriverProcPtr uses register based parameters on the 68k and cannot
- be written in or called from a high-level language without the help of
- mixed mode or assembly glue.
-
- In*:
- => devAddress D0.B
- => devType D1.B
- *)
- ADBDeviceDriverProcPtr* = Types.Register68kProcPtr; (* register PROCEDURE ADBDeviceDriver*(devAddress: ByteParameter; devType: ByteParameter); *)
- ADBDeviceDriverUPP* = Types.UniversalProcPtr;
-
- CONST
- uppADBDeviceDriverProcInfo* = $00050802; (* Register PROCEDURE (1 byte in D0, 1 byte in D1); *)
-
- PROCEDURE NewADBDeviceDriverProc*(userRoutine: ADBDeviceDriverProcPtr): ADBDeviceDriverUPP;
- (*$IF NOT GENERATINGCFM *)
- INLINE PASCAL $2E9F;
- (*$END*)
-
- PROCEDURE CallADBDeviceDriverProc*(devAddress: Types.ByteParameter; devType: Types.ByteParameter; userRoutine: ADBDeviceDriverUPP);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL ; (*•• *)
- (*To be implemented*: Glue to move parameters into registers.*)
- (*$END*)
- TYPE
- (*
- ADBServiceRoutineProcPtr uses register based parameters on the 68k and cannot
- be written in or called from a high-level language without the help of
- mixed mode or assembly glue.
-
- In*:
- => dataBuffPtr A0.L
- => completionProc A1.L
- => dataPtr A2.L
- => command D0.L
- *)
- ADBServiceRoutineProcPtr* = Types.Register68kProcPtr; (* register PROCEDURE ADBServiceRoutine*(dataBuffPtr: Types.Ptr; completionProc: ADBCompletionUPP; dataPtr: Types.Ptr; command: LONGINT); *)
- ADBServiceRoutineUPP* = Types.UniversalProcPtr;
-
- CONST
- uppADBServiceRoutineProcInfo* = $0F779802; (* Register PROCEDURE (4 bytes in A0, 4 bytes in A1, 4 bytes in A2, 4 bytes in D0); *)
-
- PROCEDURE NewADBServiceRoutineProc*(userRoutine: ADBServiceRoutineProcPtr): ADBServiceRoutineUPP;
- (*$IF NOT GENERATINGCFM *)
- INLINE PASCAL $2E9F;
- (*$END*)
-
- PROCEDURE CallADBServiceRoutineProc*(dataBuffPtr: Types.Ptr; completionProc: ADBCompletionUPP; dataPtr: Types.Ptr; command: LONGINT; userRoutine: ADBServiceRoutineUPP);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL ; (*•• *)
- (*To be implemented*: Glue to move parameters into registers.*)
- (*$END*)
- TYPE
- (*
- ADBInitProcPtr uses register based parameters on the 68k and cannot
- be written in or called from a high-level language without the help of
- mixed mode or assembly glue.
-
- In*:
- => callOrder D0.B
- *)
- ADBInitProcPtr* = Types.Register68kProcPtr; (* register PROCEDURE ADBInit*(callOrder: ByteParameter); *)
- ADBInitUPP* = Types.UniversalProcPtr;
-
- CONST
- uppADBInitProcInfo* = $00000802; (* Register PROCEDURE (1 byte in D0); *)
-
- PROCEDURE NewADBInitProc*(userRoutine: ADBInitProcPtr): ADBInitUPP;
- (*$IF NOT GENERATINGCFM *)
- INLINE PASCAL $2E9F;
- (*$END*)
-
- PROCEDURE CallADBInitProc*(callOrder: Types.ByteParameter; userRoutine: ADBInitUPP);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL ; (*•• *)
- (*To be implemented*: Glue to move parameters into registers.*)
- (*$END*)
-
- TYPE
- ADBOpBlock* = RECORD
- dataBuffPtr*: Types.Ptr; (* address of data buffer *)
- opServiceRtPtr*: ADBServiceRoutineUPP; (* service routine pointer *)
- opDataAreaPtr*: Types.Ptr; (* optional data area address *)
- END;
-
- ADBOpBPtr* = POINTER TO ADBOpBlock;
-
- ADBDataBlock* = (*ΔΔPACKEDΔΔ*) RECORD
- devType*: CHAR; (* device type *)
- origADBAddr*: CHAR; (* original ADB Address *)
- dbServiceRtPtr*: ADBServiceRoutineUPP; (* service routine pointer *)
- dbDataAreaAddr*: Types.Ptr; (* data area address *)
- END;
-
- ADBDBlkPtr* = POINTER TO ADBDataBlock;
-
- ADBSetInfoBlock* = RECORD
- siService*: ADBServiceRoutineUPP; (* service routine pointer *)
- siDataAreaAddr*: Types.Ptr; (* data area address *)
- END;
-
- ADBSInfoPtr* = POINTER TO ADBSetInfoBlock;
-
-
- PROCEDURE ADBReInit*;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $A07B;
- (*$END*)
- PROCEDURE ADBOp*(data: Types.Ptr; compRout: ADBCompletionUPP; buffer: Types.Ptr; commandNum: INTEGER): Types.OSErr;
- EXTERNAL PASCAL;
- PROCEDURE CountADBs*(): INTEGER;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $A077, $3E80;
- (*$END*)
- PROCEDURE GetIndADB*(VAR info: ADBDataBlock; devTableIndex: INTEGER): ADBAddress;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $301F, $205F, $A078, $1E80;
- (*$END*)
- PROCEDURE GetADBInfo*(VAR info: ADBDataBlock; adbAddr: Types.ByteParameter): Types.OSErr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $101F, $205F, $A079, $3E80;
- (*$END*)
- PROCEDURE SetADBInfo*((*CONST*)VAR info: ADBSetInfoBlock; adbAddr: Types.ByteParameter): Types.OSErr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $101F, $205F, $A07A, $3E80;
- (*$END*)
-
- (* $ALIGN RESET*)
- (* $POP*)
-
- END DeskBus.
-